<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<HTML>
<HEAD>
<META name="generator" content="HTML Tidy for Linux/x86 (vers 12 April 2005), see www.w3.org">
<TITLE>Configuring a host</TITLE>
<META name="GENERATOR" content="Modular DocBook HTML Stylesheet Version 1.79">
<LINK rel="HOME" title="Abyss Web Server For Windows User's Guide" href="index.html">
<LINK rel="UP" title="Hosts Management" href="hosts.html">
<LINK rel="PREVIOUS" title="Declaring a new host" href="hosts-add.html">
<LINK rel="NEXT" title="CGI, FastCGI, and ISAPI" href="scripting.html">
<LINK rel="STYLESHEET" type="text/css" href="stylesheet.css">
<META name="AppleIcon" content="icon.png">
<META name="AppleTitle" content="Configuring a host">
<META name="Description" content="Configuring a host">
<META name="AppleOrder" content="">
</HEAD>
<BODY class="SECT1" bgcolor="#FFFFFF" text="#000000">
<DIV class="NAVHEADER">
<TABLE summary="Header navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<TR>
<TH colspan="3" align="center">Abyss Web Server For Windows User's Guide</TH>
</TR>
<TR>
<TD width="10%" align="left" valign="bottom"><A href="hosts-add.html" accesskey="P">Prev</A></TD>
<TD width="80%" align="center" valign="bottom">Chapter 5. Hosts Management</TD>
<TD width="10%" align="right" valign="bottom"><A href="scripting.html" accesskey="N">Next</A></TD>
</TR>
</TABLE>
<HR align="left" width="100%"></DIV>
<DIV class="SECT1">
<H1 class="SECT1"><A name="HOSTS-CONFIGURATION" id="HOSTS-CONFIGURATION">Configuring a host</A></H1>
<P>To open the configuration dialog of a host, go to the main console dialog and press the <B class="GUILABEL">Configure</B> button located on the same line as the host name in the <B class="GUILABEL">Hosts</B> dialog.</P>
<P>The following subsections describe all the host configuration options.</P>
<DIV class="SECT2">
<H2 class="SECT2"><A name="HOSTS-GENERAL" id="HOSTS-GENERAL">General</A></H2>
<P>The <B class="GUILABEL">General</B> dialog contains the general configuration parameters of a host.</P>
<P>This dialog has the following elements:</P>
<UL>
<LI>
<P><A name="HOSTS-GENERAL-PATH" id="HOSTS-GENERAL-PATH"></A> <B class="GUILABEL">Documents Path</B>: The path of the web site files. If it is a relative path then it is considered as a subpath of the server root.</P>
</LI>
<LI>
<P><A name="HOSTS-GENERAL-PROTOCOL" id="HOSTS-GENERAL-PROTOCOL"></A> <B class="GUILABEL">Protocol</B>: Set it to <B class="GUILABEL">HTTP</B> to configure the host to use normal non-secure connections. To have the host serve content over secure connections only using SSL/TLS, set it to <B class="GUILABEL">HTTPS</B>. On Abyss Web Server X2, the host can be configured to serve content on both secure and non-secure connections by setting <B class="GUILABEL">Protocol</B> to <B class="GUILABEL">HTTP+HTTPS</B>. In such a situation, you can configure some virtual paths to be accessible on secure connections only by adding them to the <B class="GUILABEL">Exclusively Serve On HTTPS</B> table.</P>
</LI>
<LI>
<P><A name="HOSTS-GENERAL-PROTOCOL-0PANE-PORT" id="HOSTS-GENERAL-PROTOCOL-0PANE-PORT"></A> <A name="HOSTS-GENERAL-PROTOCOL-2PANE-PORT" id="HOSTS-GENERAL-PROTOCOL-2PANE-PORT"></A> <B class="GUILABEL">HTTP Port</B>: The port on which the host waits for HTTP connections. Its default value is 80. This field is not available if the <B class="GUILABEL">Protocol</B> is set to <B class="GUILABEL">HTTPS</B> only.</P>
</LI>
<LI>
<P><A name="HOSTS-GENERAL-PROTOCOL-1PANE-SECUREPORT" id="HOSTS-GENERAL-PROTOCOL-1PANE-SECUREPORT"></A> <A name="HOSTS-GENERAL-PROTOCOL-2PANE-SECUREPORT" id="HOSTS-GENERAL-PROTOCOL-2PANE-SECUREPORT"></A> <B class="GUILABEL">HTTPS Port</B>: The port on which the host waits for secure HTTPS connections. Its default value is 443. This field is not available if the <B class="GUILABEL">Protocol</B> is set to <B class="GUILABEL">HTTP</B> only.</P>
</LI>
<LI>
<P><A name="HOSTS-GENERAL-PROTOCOL-1PANE-CERTIFICATE" id="HOSTS-GENERAL-PROTOCOL-1PANE-CERTIFICATE"></A> <A name="HOSTS-GENERAL-PROTOCOL-2PANE-CERTIFICATE" id="HOSTS-GENERAL-PROTOCOL-2PANE-CERTIFICATE"></A> <B class="GUILABEL">Certificate</B>: The certificate that is used for secure connections with the current host. This field is not available if the <B class="GUILABEL">Protocol</B> is set to <B class="GUILABEL">HTTP</B> only. Note that the certificate's <B class="GUILABEL">Host Name (Common Name)</B> should be equal to or match with the names associated with the current host. Otherwise, visitors' browsers will report a warning about mismatched names on every access to the host.</P>
</LI>
<LI>
<P><A name="HOSTS-GENERAL-NAMES" id="HOSTS-GENERAL-NAMES"></A> <B class="GUILABEL">Host Names</B>: This table contains the names associated with the current host. If the table is empty, the host is not associated with a specific name and will answer any request that reaches it on the configured port. A host can also have one or more names. A host name in this table can also be a pattern such as <KBD class="USERINPUT">*.mysite.com</KBD>. Refer to the "<A href="patternsformat.html">Patterns Format</A>" appendix for more information about patterns.</P>
</LI>
<LI>
<P><A name="HOSTS-GENERAL-ADVANCED" id="HOSTS-GENERAL-ADVANCED"></A> <B class="GUILABEL">Advanced Parameters</B>: Press <B class="GUILABEL">Edit...</B> to open the advanced parameters dialog which contains the following fields:</P>
<UL>
<LI>
<P><A name="HOSTS-GENERAL-ADVANCED-BINDIP" id="HOSTS-GENERAL-ADVANCED-BINDIP"></A> <B class="GUILABEL">Bind to IP Address</B>: The IP address of the network interface that the host should listen on. When empty or set to <KBD class="USERINPUT">*</KBD>, the host listens for incoming connections on all available network interface (which the default and the recommended setting.)</P>
</LI>
<LI>
<P><A name="HOSTS-GENERAL-ADVANCED-CIPHERS" id="HOSTS-GENERAL-ADVANCED-CIPHERS"></A> <B class="GUILABEL">TLS/SSL Ciphers</B>: The ciphers that the server can accept to use when negotiating with a browser establishing a HTTPS connection to the current host. When set to <B class="GUILABEL">Strong</B>, no weak cipher (any cipher with a key length strictly less than 128 bits) will be used. But this can restrict access from some old browsers which do not support modern and strong ciphers. For custom ciphers specification, set this parameter to <B class="GUILABEL">Custom Specification</B> and fill the displayed text field with a string conforming to the <A href="http://www.openssl.org/docs/apps/ciphers.html#CIPHER_LIST_FORMAT" target="_top">OpenSSL Ciphers List Format</A>.</P>
</LI>
<LI>
<P><A name="HOSTS-GENERAL-ADVANCED-DISABLERANGE" id="HOSTS-GENERAL-ADVANCED-DISABLERANGE"></A> <B class="GUILABEL">Disable Download Resuming for</B>: Download resuming (through the <KBD class="USERINPUT">Range</KBD> HTTP header) is disabled for requests which path matches one of the virtual paths listed in this table.</P>
</LI>
<LI>
<P><A name="HOSTS-GENERAL-ADVANCED-DISABLEIFMODIFIED" id="HOSTS-GENERAL-ADVANCED-DISABLEIFMODIFIED"></A> <B class="GUILABEL">Disable Caching Negotiation for</B>: Caching negotiation with the browser (through the <KBD class="USERINPUT">If-modified</KBD> HTTP headers) is disabled for requests which path matches one of the virtual paths listed in this table.</P>
</LI>
<LI>
<P><A name="HOSTS-GENERAL-ADVANCED-CUSTOMHEADERS" id="HOSTS-GENERAL-ADVANCED-CUSTOMHEADERS"></A> <B class="GUILABEL">Custom HTTP Headers</B>: Use this table to declare custom HTTP headers that will be included in the server responses. A custom header is added when the request's virtual path matches with the value or the pattern of its associated <B class="GUILABEL">Virtual Path</B> field. See the "<A href="patternsformat.html">Patterns Format</A>" appendix for more information about patterns. The HTTP headers <KBD class="USERINPUT">Server</KBD>, <KBD class="USERINPUT">Connection</KBD>, <KBD class="USERINPUT">Keep-Alive</KBD>, <KBD class="USERINPUT">Transfer-Encoding</KBD>, and <KBD class="USERINPUT">Content-Length</KBD> cannot be customized.</P>
</LI>
<LI>
<P><A name="HOSTS-GENERAL-ADVANCED-SECUREONLY" id="HOSTS-GENERAL-ADVANCED-SECUREONLY"></A> <B class="GUILABEL">Exclusively Serve On HTTPS</B>: If a request's virtual path matches with one of the paths or the patterns declared in that table, and if the request was received on a non-secure (HTTP) connection, the server generates a redirection to the same virtual path but using HTTPS to force it to be served on a secure connection. The <B class="GUILABEL">Exclusively Serve On HTTPS</B> table is available on Abyss Web Server X2 only when the current host's <B class="GUILABEL">Protocol</B> is set to <B class="GUILABEL">HTTP+HTTPS</B>.</P>
</LI>
</UL>
</LI>
</UL>
<DIV class="NOTE">
<BLOCKQUOTE class="NOTE">
<P><B>Note:</B> The <B class="GUILABEL">Host Names</B> table is only available in Abyss Web Server X2. Abyss Web Server X1 answers to all the requests that reach the main host on the configured port regardless of the host name used in the browser.</P>
</BLOCKQUOTE>
</DIV>
</DIV>
<DIV class="SECT2">
<H2 class="SECT2"><A name="HOSTS-INDEXES" id="HOSTS-INDEXES">Index Files</A></H2>
<P>When a browser asks for a URL that does not contain a filename, the server checks for the existence of each index file in the mapped directory. If none is found and automatic directory indexing is enabled, a directory listing is generated and sent to the browser. Otherwise, an error is reported.</P>
<P>To edit, remove or add index filenames, use the <B class="GUILABEL">Index Files</B> table in the <B class="GUILABEL">Index Files</B> dialog.</P>
<DIV class="EXAMPLE"><A name="AEN1012" id="AEN1012"></A>
<P><B>Example 5-1. index.htm and index.html as index files</B></P>
<P>Assume that <KBD class="USERINPUT">index.html</KBD> and <KBD class="USERINPUT">index.htm</KBD> are set as index filenames. If a browser asks for <KBD class="USERINPUT">http://&lt;your host name&gt;:&lt;host port&gt;/hello/</KBD>, the server checks if <KBD class="USERINPUT">&lt;documents path&gt;/hello/index.html</KBD> exists. If not, it checks if <KBD class="USERINPUT">&lt;documents path&gt;/hello/index.htm</KBD> exists. If so, it is sent to the browser. If not, a listing of the directory <KBD class="USERINPUT">&lt;documents path&gt;/hello/</KBD> is generated and sent to the browser if automatic directory indexing is enabled. If it is disabled, the server replies with a forbidden error message.</P>
</DIV>
</DIV>
<DIV class="SECT2">
<H2 class="SECT2"><A name="HOSTS-DIRLIST" id="HOSTS-DIRLIST">Directory Listing</A></H2>
<P>When a browser asks for a URL that does not contain a filename, and if the server does not find an index file in the mapped directory, it generates a directory listing.</P>
<P>This dialog contains the following elements:</P>
<UL>
<LI>
<P><A name="HOSTS-DIRLIST-TYPE" id="HOSTS-DIRLIST-TYPE"></A> <B class="GUILABEL">Type</B>: The type of listing that should be generated. It can be:</P>
<UL>
<LI>
<P><B class="GUILABEL">Disabled</B>: Disables directory listing. In this case, the server generates error 403 instead of a listing.</P>
</LI>
<LI>
<P><B class="GUILABEL">Standard Listing</B>: A listing based on a standard and fixed basic template is generated.</P>
</LI>
<LI>
<P><A name="HOSTS-DIRLIST-TYPE-2PANE-MIMETYPE" id="HOSTS-DIRLIST-TYPE-2PANE-MIMETYPE"></A> <A name="HOSTS-DIRLIST-TYPE-2PANE-HEADER" id="HOSTS-DIRLIST-TYPE-2PANE-HEADER"></A> <A name="HOSTS-DIRLIST-TYPE-2PANE-LINE" id="HOSTS-DIRLIST-TYPE-2PANE-LINE"></A> <A name="HOSTS-DIRLIST-TYPE-2PANE-FOOTER" id="HOSTS-DIRLIST-TYPE-2PANE-FOOTER"></A> <B class="GUILABEL">From Template</B>: A listing is generated according to the configured custom template. See the "<A href="dirlist.html">Custom Directory Listings</A>" chapter for detailed information about creating custom templates.</P>
</LI>
<LI>
<P><A name="HOSTS-DIRLIST-TYPE-3PANE-SCRIPT" id="HOSTS-DIRLIST-TYPE-3PANE-SCRIPT"></A> <B class="GUILABEL">From Script</B>: A listing is generated by the script configured in the <B class="GUILABEL">Script</B> field. Refer to the "<A href="dirlist.html">Custom Directory Listings</A>" chapter for detailed information about creating directory listing scripts.</P>
</LI>
</UL>
</LI>
<LI>
<P><A name="HOSTS-DIRLIST-SCOPE" id="HOSTS-DIRLIST-SCOPE"></A> <B class="GUILABEL">Scope</B>: Press <B class="GUILABEL">Edit...</B> to configure the virtual paths where directory listing is permitted. The displayed dialog has the following items:</P>
<UL>
<LI>
<P><A name="HOSTS-DIRLIST-SCOPE-ORDER" id="HOSTS-DIRLIST-SCOPE-ORDER"></A> <B class="GUILABEL">Order</B>: The order that the server follows to check if directory listing is permitted for a virtual path. If it is set to <B class="GUILABEL">Allow/Deny</B>, listing is denied by default and is allowed only if the virtual path is in the <B class="GUILABEL">Allow for</B> list and is not in the <B class="GUILABEL">Deny for</B> list. If it is set to <B class="GUILABEL">Deny/Allow</B>, listing is allowed by default and is denied only if the virtual path is in the <B class="GUILABEL">Deny for</B> list and is not in the <B class="GUILABEL">Allow for</B> list.</P>
</LI>
<LI>
<P><A name="HOSTS-DIRLIST-SCOPE-ALLOW" id="HOSTS-DIRLIST-SCOPE-ALLOW"></A> <B class="GUILABEL">Allow for</B>: The list of virtual paths for which directory listing is allowed. The table can contain also path patterns. See the "<A href="patternsformat.html">Patterns Format</A>" appendix for more information about patterns.</P>
</LI>
<LI>
<P><A name="HOSTS-DIRLIST-SCOPE-DENY" id="HOSTS-DIRLIST-SCOPE-DENY"></A> <B class="GUILABEL">Deny for</B>: The list of virtual paths for which directory listing is denied. The table can contain also path patterns. See the "<A href="patternsformat.html">Patterns Format</A>" appendix for more information about patterns.</P>
</LI>
</UL>
</LI>
<LI>
<P><A name="HOSTS-DIRLIST-HIDDEN" id="HOSTS-DIRLIST-HIDDEN"></A> <B class="GUILABEL">Hidden Files</B>: The file names that are equal or that match with the listed file name patterns in this table are not included in the directory listings. See the "<A href="patternsformat.html">Patterns Format</A>" appendix for more information about patterns. This table should only contain file names with no path references.</P>
</LI>
</UL>
</DIV>
<DIV class="SECT2">
<H2 class="SECT2"><A name="HOSTS-ALIASES" id="HOSTS-ALIASES">Aliases</A></H2>
<P>Select <B class="GUILABEL">Aliases</B> in the host configuration menu to display the aliases table.</P>
<P>If a URL matches an alias' virtual path, the web server maps it to the alias' associated real path.</P>
<P>Use the displayed table to edit, remove or add aliases.</P>
<DIV class="EXAMPLE"><A name="AEN1088" id="AEN1088"></A>
<P><B>Example 5-2. Relative real path</B></P>
<P>Assume that there exists an alias which virtual path is <KBD class="USERINPUT">/images</KBD> and which real path is <KBD class="USERINPUT">web/artwork</KBD>. If a browser asks for <KBD class="USERINPUT">http://&lt;your host name&gt;:&lt;host port&gt;/images/logo.jpg</KBD>, the server maps the requested URL to the file <KBD class="USERINPUT">&lt;server root&gt;/web/artwork/logo.jpg</KBD>. The <KBD class="USERINPUT">&lt;server root&gt;</KBD> is added because the real path was relative.</P>
</DIV>
<DIV class="EXAMPLE"><A name="AEN1096" id="AEN1096"></A>
<P><B>Example 5-3. Absolute real path</B></P>
<P>Assume now that there exists an alias which virtual path is <KBD class="USERINPUT">/images</KBD> and which real path is <KBD class="USERINPUT">d:\web\artwork</KBD>. If a browser asks for <KBD class="USERINPUT">http://&lt;your host name&gt;:&lt;host port&gt;/images/logo.jpg</KBD>, the server maps the requested URL to the file <KBD class="USERINPUT">d:\web\artwork\logo.jpg</KBD>. The difference with the previous example is that the real path is absolute and not relative.</P>
</DIV>
</DIV>
<DIV class="SECT2">
<H2 class="SECT2"><A name="HOSTS-SSI" id="HOSTS-SSI">XSSI Parameters</A></H2>
<P>To configure XSSI (eXtended Server Side Includes), select <B class="GUILABEL">XSSI Parameters</B> in the host configuration menu.</P>
<P>This dialog includes the following fields:</P>
<UL>
<LI>
<P><A name="HOSTS-SSI-ENABLED" id="HOSTS-SSI-ENABLED"></A> <B class="GUILABEL">Enable XSSI Processing</B>: Enable/disable XSSI processing.</P>
</LI>
<LI>
<P><A name="HOSTS-SSI-ERRORMESSAGE" id="HOSTS-SSI-ERRORMESSAGE"></A> <B class="GUILABEL">XSSI Error Message</B>: The default error message that the server inserts when an error is detected while processing an XSSI directive. If empty, an accurate error description with debugging information is generated.</P>
</LI>
<LI>
<P><A name="HOSTS-SSI-TIMEFORMAT" id="HOSTS-SSI-TIMEFORMAT"></A> <B class="GUILABEL">Time Format String</B>: The default time format string that the server uses to display times while processing XSSI directives. If empty, the string <KBD class="USERINPUT">%A, %d-%b-%Y %H:%M:%S %Z</KBD> is used. For the complete reference of the time format string, read the description of <KBD class="USERINPUT">&lt;!-- #config timefmt="time_format" --&gt;</KBD> directive in "<A href="ssi.html">eXtended Server Side Includes</A>" chapter.</P>
</LI>
<LI>
<P><A name="HOSTS-SSI-ABBREVIATESIZE" id="HOSTS-SSI-ABBREVIATESIZE"></A> <B class="GUILABEL">Abbreviated File Size</B>: The default way to display file sizes. If it is checked, file sizes are displayed in KB or MB. Otherwise, they are displayed in bytes.</P>
</LI>
<LI>
<P><A name="HOSTS-SSI-EXECCMD" id="HOSTS-SSI-EXECCMD"></A> <B class="GUILABEL">Process "#Exec cmd" Directives</B>: Enable/disable the execution of shell commands in XSSI.</P>
</LI>
<LI>
<P><A name="HOSTS-SSI-EXTENSIONS" id="HOSTS-SSI-EXTENSIONS"></A> <B class="GUILABEL">Associated Extensions</B>: If a file name extension matches with one of these extensions or extensions patterns, it is processed as an XSSI file. Read the "<A href="patternsformat.html">Patterns Format</A>" appendix for more information about patterns. By default, the server is configured to process XSSI directives in files which extensions are <KBD class="USERINPUT">shtml</KBD>, <KBD class="USERINPUT">shtm</KBD>, or <KBD class="USERINPUT">stm</KBD>.</P>
</LI>
<LI>
<P><A name="HOSTS-SSI-EXECGIPATHS" id="HOSTS-SSI-EXECGIPATHS"></A> <B class="GUILABEL">"#Exec cgi" Search Paths</B>: If the argument of a <KBD class="USERINPUT">#exec cgi</KBD> directive is a relative path, the server will try to locate the file inside the directory containing the currently processed XSSI file. If it is not found there, it will search for it inside the virtual paths listed in <B class="GUILABEL">'#exec cgi' Search Paths</B>.</P>
</LI>
</UL>
<P>For more information about XSSI, refer to "<A href="ssi.html">eXtended Server Side Includes</A>" chapter.</P>
</DIV>
<DIV class="SECT2">
<H2 class="SECT2"><A name="HOSTS-UG" id="HOSTS-UG">Users and Groups</A></H2>
<P>Select <B class="GUILABEL">Users and Groups</B> in the host configuration menu to display the users and groups tables.</P>
<P>Use the displayed tables to edit, remove or add users and groups.</P>
<P>A user is defined by its name and its password. A group is defined by its name and its members which can be users and other groups.</P>
<DIV class="NOTE">
<BLOCKQUOTE class="NOTE">
<P><B>Note:</B> The console hides automatically groups that can lead to circular references when editing a group.</P>
</BLOCKQUOTE>
</DIV>
</DIV>
<DIV class="SECT2">
<H2 class="SECT2"><A name="HOSTS-CUSTOMERRORS" id="HOSTS-CUSTOMERRORS">Custom Error Pages</A></H2>
<P>With Abyss Web Server, you can override the standard error pages and replace them with yours. To do so, select <B class="GUILABEL">Custom Error Pages</B> in the host configuration menu.</P>
<P>This dialog includes the following elements:</P>
<UL>
<LI>
<P><A name="HOSTS-CUSTOMERRORS-ERRORS" id="HOSTS-CUSTOMERRORS-ERRORS"></A> <B class="GUILABEL">Custom Error Pages</B>: This table contains the customized errors and their associated URLs.</P>
</LI>
<LI>
<P><A name="HOSTS-CUSTOMERRORS-DEFAULT" id="HOSTS-CUSTOMERRORS-DEFAULT"></A> <B class="GUILABEL">Default Custom Error Page</B>: The URL used when an error which code is not listed in the <B class="GUILABEL">Custom Error Pages</B> table occurs. If empty, Abyss Web Server generates automatically a standard error page.</P>
</LI>
</UL>
<P>An error URL can be:</P>
<UL>
<LI>
<P>Local: If it begins with a slash <KBD class="USERINPUT">/</KBD>, the URL is local to the web server.</P>
</LI>
<LI>
<P>Global: If it begins with <KBD class="USERINPUT">http://</KBD>, the URL is global and the web server informs the browser a redirect to that URL when an error occurs.</P>
</LI>
</UL>
<DIV class="NOTE">
<BLOCKQUOTE class="NOTE">
<P><B>Note:</B> It is only relevant to set 4xx and 5xx error codes. Other error codes are handled internally in the web server and do not lead to displaying an error page.</P>
</BLOCKQUOTE>
</DIV>
<DIV class="NOTE">
<BLOCKQUOTE class="NOTE">
<P><B>Note:</B> When using a local URL that is a CGI script or an XSSI page as a custom error page, the server operates an internal redirection and adds to the custom error page's environment variables all the faulty request environment variables prefixed with <KBD class="USERINPUT">REDIRECT_</KBD>. It adds also the special variables <KBD class="USERINPUT">REDIRECT_STATUS</KBD> and <KBD class="USERINPUT">REDIRECT_STATUS_CODE</KBD> which contain the status code of the faulty request. For more information, read "<A href="cgivars.html">CGI environment variables</A>" section in "<A href="scripting.html">CGI, FastCGI, and ISAPI</A>" chapter.</P>
</BLOCKQUOTE>
</DIV>
</DIV>
<DIV class="SECT2">
<H2 class="SECT2"><A name="HOSTS-SCRIPTING" id="HOSTS-SCRIPTING">Scripting Parameters</A></H2>
<P>To configure CGI, FastCGI, ISAPI, and scripts execution, select <B class="GUILABEL">Scripting Parameters</B> in the host configuration menu.</P>
<P>This dialog includes the following fields:</P>
<UL>
<LI>
<P><A name="HOSTS-SCRIPTING-ENABLED" id="HOSTS-SCRIPTING-ENABLED"></A> <B class="GUILABEL">Enable Scripts Execution</B>: Enable/disable CGI, FastCGI, ISAPI, and scripts execution.</P>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-CGI" id="HOSTS-SCRIPTING-CGI"></A> <B class="GUILABEL">CGI Parameters</B>: Press <B class="GUILABEL">Edit...</B> to access the CGI parameters dialog which contains the following elements:</P>
<UL>
<LI>
<P><A name="HOSTS-SCRIPTING-CGI-ERRORFILE" id="HOSTS-SCRIPTING-CGI-ERRORFILE"></A> <B class="GUILABEL">Error File</B>: The path of the file where CGI scripts write error messages. You can leave it empty if you do not want to trace CGI scripts' errors.</P>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-CGI-TIMEOUT" id="HOSTS-SCRIPTING-CGI-TIMEOUT"></A> <B class="GUILABEL">CGI Execution Timeout</B>: How long (in seconds) the server should wait for a CGI script to deliver content before aborting it.</P>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-CGI-USEREGISTRY" id="HOSTS-SCRIPTING-CGI-USEREGISTRY"></A> <B class="GUILABEL">Resolve Interpreter from the Windows Registry</B>: Use the Windows Registry to automatically find the interpreter which can run a CGI script.</P>
<P>This parameter should be used very carefully as it can make the server report Error 500 (Internal Server Error) for normal documents. For example, if a HTML file is in one of the CGI Paths (or matches with one of the CGI Paths patterns), and if this parameter is checked, the server asks the Windows Registry about the executable that is normally used to open HTML files (in a similar fashion to what does Windows Explorer to know what application to launch when you double-click on a document icon). The Windows Registry gives back your browser executable path and Abyss Web Server runs the HTML file as a CGI Script with this browser as its interpreter. But after launching it, Abyss Web Server understands that this executable is not a valid CGI Interpreter. So it aborts the executable and reports Error 500.</P>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-CGI-USESHEBANG" id="HOSTS-SCRIPTING-CGI-USESHEBANG"></A> <B class="GUILABEL">Resolve Interpreter using the #! Line</B>: Read the first line of the CGI script. If it begins with <KBD class="USERINPUT">#!</KBD>, the rest of the line is considered as the path to the script's interpreter.</P>
</LI>
</UL>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-ISAPI" id="HOSTS-SCRIPTING-ISAPI"></A> <B class="GUILABEL">ISAPI Parameters</B>: Press <B class="GUILABEL">Edit...</B> to access the ISAPI parameters dialog which contains the following elements:</P>
<UL>
<LI>
<P><A name="HOSTS-SCRIPTING-ISAPI-ERRORFILE" id="HOSTS-SCRIPTING-ISAPI-ERRORFILE"></A> <B class="GUILABEL">Error File</B>: The path of the file where ISAPI extensions write error messages and where the server logs ISAPI activity when <B class="GUILABEL">Debugging Level</B> is set to a value other than <B class="GUILABEL">None</B>. You can leave it empty if you do not want to trace ISAPI errors.</P>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-ISAPI-DEBUGLEVEL" id="HOSTS-SCRIPTING-ISAPI-DEBUGLEVEL"></A> <B class="GUILABEL">Debugging Level</B>: The type of information Abyss Web Server should log when an ISAPI is invoked. It should be set the <B class="GUILABEL">None</B> unless you are developing or debugging an ISAPI extension.</P>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-ISAPI-EXTENSIONS" id="HOSTS-SCRIPTING-ISAPI-EXTENSIONS"></A> <B class="GUILABEL">ISAPI Filename Extensions</B>: This table contains the file name extensions that helps the server recognize if a file is an ISAPI or not. It is filled with <KBD class="USERINPUT">dll</KBD> by default. This table is used for example to know if a declared interpreter is an ISAPI extension or not.</P>
</LI>
</UL>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-FASTCGI" id="HOSTS-SCRIPTING-FASTCGI"></A> <B class="GUILABEL">FastCGI Parameters</B>: Press <B class="GUILABEL">Edit...</B> to access the FastCGI parameters dialog which contains the following elements:</P>
<UL>
<LI>
<P><A name="HOSTS-SCRIPTING-FASTCGI-ERRORFILE" id="HOSTS-SCRIPTING-FASTCGI-ERRORFILE"></A> <B class="GUILABEL">Error File</B>: The path of the file where FastCGI executables and interpreters write error messages and where the server logs their activity when <B class="GUILABEL">Debugging Level</B> is set to a value other than <B class="GUILABEL">None</B>. You can leave it empty if you do not want to trace FastCGI errors.</P>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-FASTCGI-DEBUGLEVEL" id="HOSTS-SCRIPTING-FASTCGI-DEBUGLEVEL"></A> <B class="GUILABEL">Debugging Level</B>: The type of information Abyss Web Server should log when a FastCGI executable or interpreter is running.</P>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-FASTCGI-TIMEOUT" id="HOSTS-SCRIPTING-FASTCGI-TIMEOUT"></A> <B class="GUILABEL">FastCGI Processes Timeout</B>: How long (in seconds) the server should let an unused FastCGI process wait before aborting it.</P>
</LI>
</UL>
</LI>
</UL>
<P>The dialog contains also the following tables:</P>
<UL>
<LI>
<P><A name="HOSTS-SCRIPTING-INTERPRETERS" id="HOSTS-SCRIPTING-INTERPRETERS"></A> <B class="GUILABEL">Interpreters</B>: The server uses this table to know which interpreter to use to execute a script. The choice is based on the script's file name extension: an interpreter runs a script if the extension of that script matches with one of the associated extensions or extensions patterns of the interpreter.</P>
<P>Each interpreter is defined by its:</P>
<UL>
<LI>
<P><A name="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE" id="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE"></A> <B class="GUILABEL">Interface</B>: It has to be set to <B class="GUILABEL">FastCGI (Local - Pipes)</B> or <B class="GUILABEL">FastCGI (Local - TCP/IP Sockets)</B> if the interpreter supports FastCGI and its executable is available on the computer where the Web server is installed. If you have a standalone or remote FastCGI server, set it to <B class="GUILABEL">FastCGI (Remote - Pipes)</B> or <B class="GUILABEL">FastCGI (Remote - TCP/IP Sockets)</B> depending on the type of network protocol it supports. Otherwise, <B class="GUILABEL">Interface</B> should be set to <B class="GUILABEL">CGI/ISAPI</B>. Note that for most FastCGI compliant interpreters, you can either choose <B class="GUILABEL">FastCGI (Local - Pipes)</B> or <B class="GUILABEL">FastCGI (Local - TCP/IP Sockets)</B> with no noticeable difference as both modes provide comparable performances. But some FastCGI interpreters such as PHP 5.1.3 and later only support a single mode of operation. So if an interpreter fails to work in a given mode, select the other and retry. You can also refer to Aprelium's Web site to know which mode is supported by that interpreter. Note also that both <B class="GUILABEL">FastCGI (Local - Pipes)</B> and <B class="GUILABEL">FastCGI (Remote - Pipes)</B> are not available on Windows 95, 98, and ME.</P>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE-0PANE-FILE" id="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE-0PANE-FILE"></A> <A name="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE-1PANE-FILE" id="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE-1PANE-FILE"></A> <A name="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE-2PANE-FILE" id="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE-2PANE-FILE"></A> <B class="GUILABEL">Interpreter</B>: The path of the FastCGI/CGI executable or the ISAPI extension (not available if <B class="GUILABEL">Interface</B> is set to <B class="GUILABEL">FastCGI (Remote - Pipes)</B> or <B class="GUILABEL">FastCGI (Remote - TCP/IP Sockets)</B>).</P>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE-0PANE-ARGUMENTS" id="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE-0PANE-ARGUMENTS"></A> <A name="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE-1PANE-ARGUMENTS" id="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE-1PANE-ARGUMENTS"></A> <A name="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE-2PANE-ARGUMENTS" id="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE-2PANE-ARGUMENTS"></A> <B class="GUILABEL">Arguments</B>: The additional arguments that are used to run a FastCGI/CGI executable (not available if <B class="GUILABEL">Interface</B> is set to <B class="GUILABEL">FastCGI (Remote - Pipes)</B> or <B class="GUILABEL">FastCGI (Remote - TCP/IP Sockets)</B>). These arguments are ignored if the interpreter is an ISAPI extension. Any occurrence of <KBD class="USERINPUT">%1</KBD> or <KBD class="USERINPUT">$1</KBD> in the arguments is replaced by the script file name when running the FastCGI/CGI interpreter.</P>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE-3PANE-PIPE" id="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE-3PANE-PIPE"></A> <B class="GUILABEL">Pipe Path</B>: The full path of the pipe that will be used to communicate with the interpreter if <B class="GUILABEL">Interface</B> is set to <B class="GUILABEL">FastCGI (Remote - Pipes)</B>. If the FastCGI server is running locally, its pipe path should be of the form <KBD class="USERINPUT">\\.\pipe\name</KBD> where <KBD class="USERINPUT">name</KBD> is the name of the pipe. If the FastCGI server is available on another computer on the LAN, its pipe path should be of the form <KBD class="USERINPUT">\\computer\pipe\name</KBD> where <KBD class="USERINPUT">computer</KBD> is the name of the computer hosting the FastCGI server.</P>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE-4PANE-ADDR" id="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE-4PANE-ADDR"></A> <B class="GUILABEL">Remote Server IP Address</B>: The IP address of the computer that is hosting the interpreter's FastCGI server (available only if <B class="GUILABEL">Interface</B> is set to <B class="GUILABEL">FastCGI (Remote - TCP/IP Sockets)</B>).</P>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE-4PANE-PORT" id="HOSTS-SCRIPTING-INTERPRETERS-INTERFACE-4PANE-PORT"></A> <B class="GUILABEL">Port</B>: The number of the port the interpreter's FastCGI server is listening on (available only if <B class="GUILABEL">Interface</B> is set to <B class="GUILABEL">FastCGI (Remote - TCP/IP Sockets)</B>).</P>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-INTERPRETERS-CHECKEXISTS" id="HOSTS-SCRIPTING-INTERPRETERS-CHECKEXISTS"></A> <B class="GUILABEL">Check for file existence before execution</B>: If enabled, the server will report an error when the script file requested is not physically available on the disk. If this option is disabled, the server will launch the interpreter associated with the requested script without even if its file does not exist on the disk. It is then up to the interpreter to report an error or to act accordingly.</P>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-INTERPRETERS-TYPE" id="HOSTS-SCRIPTING-INTERPRETERS-TYPE"></A> <B class="GUILABEL">Type</B>: Some interpreters are not fully conforming to the FastCGI/CGI or the ISAPI specifications. By setting this parameter to the correct value, the server activates a special <SPAN class="emphasis"><I class="EMPHASIS">workaround</I></SPAN> mode to support them. PHP interpreters (both FastCGI/CGI and ISAPI version) and Shorthand ISAPI should have their <B class="GUILABEL">Type</B> set to <B class="GUILABEL">PHP Style</B>. ActiveState ActivePerl ISAPI should have its <B class="GUILABEL">Type</B> set to <B class="GUILABEL">ActivePerl ISAPI</B>. For any other interpreter, set <B class="GUILABEL">Type</B> to <B class="GUILABEL">Standard</B>.</P>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-INTERPRETERS-EXTENSIONS" id="HOSTS-SCRIPTING-INTERPRETERS-EXTENSIONS"></A> <B class="GUILABEL">Associated Extensions</B>: The list of file name extensions that are to be handled by the current interpreter. You can also define an extension pattern. Refer to the "<A href="patternsformat.html">Patterns Format</A>" appendix for more information about patterns. To associate more than a single extension with an interpreter, press <B class="GUILABEL">Add...</B> for every extension to declare it.</P>
</LI>
</UL>
<P><A name="HOSTS-SCRIPTING-INTERPRETERS-UPDATEPATHS" id="HOSTS-SCRIPTING-INTERPRETERS-UPDATEPATHS"></A> When adding or editing an interpreter, letting <B class="GUILABEL">Use the associated extensions to automatically update the Script Paths</B> checked makes Abyss Web Server automatically add/remove the pattern <KBD class="USERINPUT">/*.ext</KBD> in the <B class="GUILABEL">Script Paths</B> table for every added/removed extension <KBD class="USERINPUT">ext</KBD> in the <B class="GUILABEL">Associated Extensions</B> list.</P>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-PATHS" id="HOSTS-SCRIPTING-PATHS"></A> <B class="GUILABEL">Script Paths</B>: Only files that are in one of the <B class="GUILABEL">Script Paths</B> or their subpaths, or that match with one of the <B class="GUILABEL">Script Paths</B> patterns can be processed as scripts. These paths are virtual paths. See the "<A href="patternsformat.html">Patterns Format</A>" appendix for more information about patterns. Executables located in each path or its subpaths is considered as CGI or FastCGI applications according to the setting of <B class="GUILABEL">Interface type of executables in this path</B> of the corresponding script path.</P>
</LI>
<LI>
<P><A name="HOSTS-SCRIPTING-ENVIRONMENT" id="HOSTS-SCRIPTING-ENVIRONMENT"></A> <B class="GUILABEL">Custom Environment Variables</B>: This table contains the variables you want to add to the execution environment of the FastCGI/CGI interpreters and scripts. Each variable is defined by its name and its value.</P>
</LI>
</UL>
<P>For more information about scripts, see "<A href="scripting.html">CGI, FastCGI, and ISAPI</A>" chapter.</P>
</DIV>
<DIV class="SECT2">
<H2 class="SECT2"><A name="HOSTS-ASPNET" id="HOSTS-ASPNET">ASP.NET Parameters</A></H2>
<P>Select <B class="GUILABEL">ASP.NET Parameters</B> in the host configuration menu to display the ASP.NET applications table.</P>
<P>Abyss Web Server features genuine support for ASP.NET applications. If you do not see the <B class="GUILABEL">ASP.NET Parameters</B> icon in the host menu, it is probably because you have not installed ASP.NET support in Abyss Web Server. To remedy to that, launch the installer package again to upgrade your current setup of Abyss Web Server and ensure that the <B class="GUILABEL">ASP.NET Support</B> component is selected.</P>
<P>If you do not have a version of Microsoft .NET Framework 1.1 (or higher) correctly installed on your system, Abyss Web Server will report the problem and provide you with a link to install the missing system component.</P>
<P>Unlike other scripting languages and platforms, ASP.NET has the concept of <SPAN class="emphasis"><I class="EMPHASIS">application</I></SPAN> which is a set of files related to the same ASP.NET program. ASP.NET must know where each program is to be able to locate the configuration files of the application and to process it correctly.</P>
<P>If ASP.NET support is correctly set up and a recognized Microsoft .NET Framework version is installed, the <B class="GUILABEL">ASP.NET Parameters</B> dialog shows a table to edit, remove or add ASP.NET applications.</P>
<A name="HOSTS-ASPNET-APPLICATIONS" id="HOSTS-ASPNET-APPLICATIONS"></A>
<P>Each ASP.NET application is defined by its:</P>
<UL>
<LI>
<P><A name="HOSTS-ASPNET-APPLICATIONS-VIRTUAL" id="HOSTS-ASPNET-APPLICATIONS-VIRTUAL"></A> <B class="GUILABEL">Virtual Path</B>: The virtual path containing all the ASP.NET application files and subdirectories.</P>
</LI>
<LI>
<P><A name="HOSTS-ASPNET-APPLICATIONS-VERSION" id="HOSTS-ASPNET-APPLICATIONS-VERSION"></A> <B class="GUILABEL">.NET Version</B>: The version of .NET Framework that will be used to run the ASP.NET application.</P>
</LI>
<LI>
<P><A name="HOSTS-ASPNET-APPLICATIONS-EXTENSIONS" id="HOSTS-ASPNET-APPLICATIONS-EXTENSIONS"></A> <B class="GUILABEL">Associated Extensions</B>: Files inside the ASP.NET application virtual path which extensions are listed in this table are processed by the ASP.NET engine. Note that <B class="GUILABEL">Associated Extensions</B> is always filled with the full list of file name extensions that can be handled by the .NET version you have selected when defining the ASP.NET application. So it is rarely necessary to update this table.</P>
</LI>
</UL>
</DIV>
<DIV class="SECT2">
<H2 class="SECT2"><A name="HOSTS-AC" id="HOSTS-AC">Access Control</A></H2>
<P>To restrict and manage the access to paths in your web site, select <B class="GUILABEL">Access Control</B> in the host configuration.</P>
<P>To edit, remove or add path access rules, use the displayed table.</P>
<P><A name="HOSTS-AC-RULES" id="HOSTS-AC-RULES"></A> The path access edition dialog contains the following fields:</P>
<UL>
<LI>
<P><A name="HOSTS-AC-RULES-PATH" id="HOSTS-AC-RULES-PATH"></A> <B class="GUILABEL">Virtual Path</B>: The virtual path which contents' access is to be restricted. It must always begin with a slash <KBD class="USERINPUT">/</KBD>. This field accepts also path patterns. In that case, the access rule applies to any virtual path that matches with the specified pattern. Refer to the "<A href="patternsformat.html">Patterns Format</A>" appendix for more information about patterns.</P>
</LI>
<LI>
<P><A name="HOSTS-AC-RULES-REALM" id="HOSTS-AC-RULES-REALM"></A> <B class="GUILABEL">Realm</B>: A short description of the path's contents. It is prompted to users by the browser when it asks them for credentials.</P>
</LI>
<LI>
<P><A name="HOSTS-AC-RULES-ORDER" id="HOSTS-AC-RULES-ORDER"></A> <B class="GUILABEL">Order</B>: The order that the server follows to check if access is granted to a user. If it is set to <B class="GUILABEL">Allow/Deny</B>, access is denied by default and is allowed only if the user is in the <B class="GUILABEL">Allow for</B> list and is not in the <B class="GUILABEL">Deny for</B> list. If it is set to <B class="GUILABEL">Deny/Allow</B>, access is allowed by default and is denied only if the user is in the <B class="GUILABEL">Deny for</B> list and is not in the <B class="GUILABEL">Allow for</B> list.</P>
</LI>
<LI>
<P><A name="HOSTS-AC-RULES-ALLOW" id="HOSTS-AC-RULES-ALLOW"></A> <B class="GUILABEL">Allow for</B>: The list of users and groups for whom access is allowed.</P>
</LI>
<LI>
<P><A name="HOSTS-AC-RULES-DENY" id="HOSTS-AC-RULES-DENY"></A> <B class="GUILABEL">Deny for</B>: The list of users and groups for whom access is denied.</P>
</LI>
</UL>
<DIV class="NOTE">
<BLOCKQUOTE class="NOTE">
<P><B>Note:</B> If <B class="GUILABEL">Deny for</B> list is empty and the order is <B class="GUILABEL">Deny/Allow</B>, access is granted to all declared users and groups.</P>
</BLOCKQUOTE>
</DIV>
</DIV>
<DIV class="SECT2">
<H2 class="SECT2"><A name="HOSTS-IPCONTROL" id="HOSTS-IPCONTROL">IP Address Control</A></H2>
<P>To restrict and manage the access to paths in your web site, select <B class="GUILABEL">IP Address Control</B> in the host configuration.</P>
<P>To edit, remove or add path IP Address Control rules, use the displayed table.</P>
<P><A name="HOSTS-IPCONTROL-RULES" id="HOSTS-IPCONTROL-RULES"></A> The IP address control rule edition dialog contains the following fields:</P>
<UL>
<LI>
<P><A name="HOSTS-IPCONTROL-RULES-VPATH" id="HOSTS-IPCONTROL-RULES-VPATH"></A> <B class="GUILABEL">Virtual Path</B>: The virtual path which contents' access is to be restricted. It must always begin with a slash <KBD class="USERINPUT">/</KBD>. This field accepts also path patterns. In that case, the access rule applies to any virtual path that matches with the specified pattern. Refer to the "<A href="patternsformat.html">Patterns Format</A>" appendix for more information about patterns.</P>
</LI>
<LI>
<P><A name="HOSTS-IPCONTROL-RULES-ORDER" id="HOSTS-IPCONTROL-RULES-ORDER"></A> <B class="GUILABEL">Order</B>: The order that the server follows to check if access is granted to a client according to its IP address. If it is set to <B class="GUILABEL">Allow/Deny</B>, access is denied by default and is allowed only if the client IP address is in the <B class="GUILABEL">Allowed IP Addresses</B> list and is not in the <B class="GUILABEL">Denied IP Addresses</B> list. If it is set to <B class="GUILABEL">Deny/Allow</B>, access is allowed by default and is denied only if the client IP address is in the <B class="GUILABEL">Denied IP Addresses</B> list and is not in the <B class="GUILABEL">Allowed IP Addresses</B> list.</P>
</LI>
<LI>
<P><A name="HOSTS-IPCONTROL-RULES-ALLOW" id="HOSTS-IPCONTROL-RULES-ALLOW"></A> <B class="GUILABEL">Allowed IP Addresses</B>: The list of IP addresses or IP address ranges for which access is allowed. Refer to "<A href="ipformat.html">IP Addresses and Ranges Format</A>" appendix for more information about the IP addresses and ranges.</P>
</LI>
<LI>
<P><A name="HOSTS-IPCONTROL-RULES-DENY" id="HOSTS-IPCONTROL-RULES-DENY"></A> <B class="GUILABEL">Denied IP Addresses</B>: The list of IP addresses or IP address ranges for which access is denied. Refer to "<A href="ipformat.html">IP Addresses and Ranges Format</A>" appendix for more information about the IP addresses and ranges.</P>
</LI>
</UL>
<DIV class="NOTE">
<BLOCKQUOTE class="NOTE">
<P><B>Note:</B> If <B class="GUILABEL">Denied IP Addresses</B> list is empty and the order is <B class="GUILABEL">Deny/Allow</B>, access is granted to any client.</P>
</BLOCKQUOTE>
</DIV>
</DIV>
<DIV class="SECT2">
<H2 class="SECT2"><A name="HOSTS-URLREWRITE" id="HOSTS-URLREWRITE">URL Rewriting</A></H2>
<P>To automatically redirect certain requests or rewrite their URL, select <B class="GUILABEL">URL Rewriting</B> in the host configuration menu.</P>
<P>This dialog includes the following elements:</P>
<UL>
<LI>
<P><A name="HOSTS-URLREWRITE-RULES" id="HOSTS-URLREWRITE-RULES"></A> <B class="GUILABEL">URL Rewriting Rules</B>: Use this table to edit, remove or add URL rewriting rules. The URL rewriting rule definition dialog contains the following items:</P>
<UL>
<LI>
<P><A name="HOSTS-URLREWRITE-RULES-ENABLED" id="HOSTS-URLREWRITE-RULES-ENABLED"></A> <B class="GUILABEL">Enabled Rule</B>: Enable/disable the current URL rewriting rule.</P>
</LI>
<LI>
<P><A name="HOSTS-URLREWRITE-RULES-PATTERN" id="HOSTS-URLREWRITE-RULES-PATTERN"></A> <B class="GUILABEL">Virtual Path Regular Expression</B>: The current URL rewriting rule will be examined for virtual paths which match with this regular expression. For more information about regular expressions syntax, see the "<A href="regex.html">Regular Expressions</A>" appendix.</P>
</LI>
<LI>
<P><A name="HOSTS-URLREWRITE-RULES-CASESENSITIVE" id="HOSTS-URLREWRITE-RULES-CASESENSITIVE"></A> <B class="GUILABEL">Case Sensitive</B>: The above regular expression is matched case sensitively if this option is checked. Otherwise, no difference between lower and upper cases is made while matching.</P>
</LI>
<LI>
<P><A name="HOSTS-URLREWRITE-RULES-CONDITIONS" id="HOSTS-URLREWRITE-RULES-CONDITIONS"></A> <B class="GUILABEL">Conditions</B>: If all the conditions in this table are verified (are true), the URL rewriting rule will apply. Otherwise, it is skipped and ignored. Each condition consists in a test of the value of a CGI variable of the current request with an operator and possibly an operand. Three kinds of operators are available: string operators (regular expression matching, and lexicographical ordering), numerical operators (numerical ordering), and file operators (is a file, is a directory, is not a file or is empty).</P>
</LI>
<LI>
<P><A name="HOSTS-URLREWRITE-RULES-SUBREQUESTS" id="HOSTS-URLREWRITE-RULES-SUBREQUESTS"></A> <B class="GUILABEL">Apply to subrequests too</B>: If checked, the rule is tested on subrequests too. Subrequests are requests that are internally generated by the server and not directly invoked by a client. For instance, XSSI include directives generate subrequests.</P>
</LI>
<LI>
<P><A name="HOSTS-URLREWRITE-RULES-REDIRECT" id="HOSTS-URLREWRITE-RULES-REDIRECT"></A> <B class="GUILABEL">If the rule matches</B>: The action to perform when the virtual path matches with the regular expression and when all the conditions are verified:</P>
<UL>
<LI>
<P><B class="GUILABEL">Perform an internal redirection</B>: The server will continue the processing of the request as if the requested virtual path was the one that is specified in <B class="GUILABEL">Redirect to</B>. That virtual path could contain backreferences to the groups of the regular expression specified in <B class="GUILABEL">Virtual Path Regular Expression</B>. Occurrences of <KBD class="USERINPUT">$1</KBD> are substituted with the backreference of the first group (if any), occurrences of <KBD class="USERINPUT">$2</KBD> are substituted with the backreference of the second group (if any), and so on. For more information about backreferences, refer to the "<A href="regex.html">Regular Expressions</A>" appendix. You also decide with <B class="GUILABEL">Next Action</B> if URL rewriting has to be stopped, restarted, or continued after the application of the current URL rewriting rule.</P>
</LI>
<LI>
<P><B class="GUILABEL">Perform an external redirection</B>: The server will redirect the client to the URL or the virtual path set in <B class="GUILABEL">Redirect to</B>. That URL or virtual path could contain backreferences to the groups of the regular expression specified in <B class="GUILABEL">Virtual Path Regular Expression</B>. For more information about backreferences, refer to the "<A href="regex.html">Regular Expressions</A>" appendix. By default, the external redirection results in a HTTP response with a 302 status code but you can choose a more appropriate one by setting <B class="GUILABEL">Status Code</B> to another value between 300 and 399.</P>
</LI>
<LI>
<P><B class="GUILABEL">Report an error to the client</B>: The server will report an error to the client. The <B class="GUILABEL">Status Code</B> of that error must be in the 400-999 range.</P>
</LI>
</UL>
<P>When a <B class="GUILABEL">Redirect To</B> field is available, the checkbox <B class="GUILABEL">Append Query String</B> is used to control the automatic addition of the original query string to the final redirected URL or virtual path. The original query string is the substring after the <KBD class="USERINPUT">?</KBD> character in the original request URL. If <B class="GUILABEL">Redirect To</B> already contains a query string and if the original URL's query string is not empty, both are concatenated in the final URL or virtual path that the request will be redirected to.</P>
<P>The <B class="GUILABEL">Escape Redirection Location</B> option should be unchecked only when the <B class="GUILABEL">Redirect To</B> field contains a location which is already URL escaped.</P>
</LI>
</UL>
</LI>
<LI>
<P><A name="HOSTS-URLREWRITE-ADVANCED" id="HOSTS-URLREWRITE-ADVANCED"></A> <B class="GUILABEL">Advanced Parameters</B>: Press <B class="GUILABEL">Edit...</B> to access the advanced parameters dialog which contains the following elements:</P>
<UL>
<LI>
<P><A name="HOSTS-URLREWRITE-ADVANCED-DEBUGFILE" id="HOSTS-URLREWRITE-ADVANCED-DEBUGFILE"></A> <B class="GUILABEL">Log File</B>: The path of the file where the Abyss Web Server will log extensive debugging information about the processing of each request by the URL rewriting engine. The size of that file can become very huge very quickly as each request results in several dozen lines of logged debugging information. For that reason, it is recommended to turn it off on production servers.</P>
</LI>
<LI>
<P><A name="HOSTS-URLREWRITE-ADVANCED-LOGVARS" id="HOSTS-URLREWRITE-ADVANCED-LOGVARS"></A> <B class="GUILABEL">Log variables</B>: If checked, the CGI variables of each request are logged along with the URL rewriting processing details.</P>
</LI>
</UL>
</LI>
</UL>
</DIV>
<DIV class="SECT2">
<H2 class="SECT2"><A name="HOSTS-COMPRESS" id="HOSTS-COMPRESS">Compression</A></H2>
<P>Compression is performed on any content (be it static or dynamically generated) provided that all the following conditions are satisfied:</P>
<UL>
<LI>
<P>The browser requesting the content claims support for HTTP decompression by including an <KBD class="USERINPUT">Accept-Encoding</KBD> header in the HTTP request;</P>
</LI>
<LI>
<P>The virtual path of the content belongs to the compression <A href="hosts-configuration.html#HOSTS-COMPRESS-SCOPE">scope</A>;</P>
</LI>
<LI>
<P>The MIME type of the content matches with one of the MIME types listed in the <A href="hosts-configuration.html#HOSTS-COMPRESS-MIMES">MIME Types</A> table.</P>
</LI>
</UL>
<P>If one or more of the above conditions is not met, the current content is sent back to the browser uncompressed.</P>
<P>The <B class="GUILABEL">Compression</B> dialog contains the following elements:</P>
<UL>
<LI>
<P><A name="HOSTS-COMPRESS-LEVEL" id="HOSTS-COMPRESS-LEVEL"></A> <B class="GUILABEL">Level</B>: The compression level. It ranges from 1 (Minimum compression - Faster) to 9 (Maximum compression - Slower). If it is set to 0, compression is disabled.</P>
</LI>
<LI>
<P><A name="HOSTS-COMPRESS-SCOPE" id="HOSTS-COMPRESS-SCOPE"></A> <B class="GUILABEL">Scope</B>: Press <B class="GUILABEL">Edit...</B> to configure the virtual paths where compression is considered. The displayed dialog has the following items:</P>
<UL>
<LI>
<P><A name="HOSTS-COMPRESS-SCOPE-ORDER" id="HOSTS-COMPRESS-SCOPE-ORDER"></A> <B class="GUILABEL">Order</B>: The order that the server follows to check if compression is considered for a virtual path. If it is set to <B class="GUILABEL">Allow/Deny</B>, compression is denied by default and is allowed only if the virtual path is in the <B class="GUILABEL">Allow for</B> list and is not in the <B class="GUILABEL">Deny for</B> list. If it is set to <B class="GUILABEL">Deny/Allow</B>, compression is allowed by default and is denied only if the virtual path is in the <B class="GUILABEL">Deny for</B> list and is not in the <B class="GUILABEL">Allow for</B> list.</P>
</LI>
<LI>
<P><A name="HOSTS-COMPRESS-SCOPE-ALLOW" id="HOSTS-COMPRESS-SCOPE-ALLOW"></A> <B class="GUILABEL">Allow for</B>: The list of virtual paths for which compression is allowed. The table can contain also path patterns. See the "<A href="patternsformat.html">Patterns Format</A>" appendix for more information about patterns.</P>
</LI>
<LI>
<P><A name="HOSTS-COMPRESS-SCOPE-DENY" id="HOSTS-COMPRESS-SCOPE-DENY"></A> <B class="GUILABEL">Deny for</B>: The list of virtual paths for which compression is denied. The table can contain also path patterns. See the "<A href="patternsformat.html">Patterns Format</A>" appendix for more information about patterns.</P>
</LI>
</UL>
</LI>
<LI>
<P><A name="HOSTS-COMPRESS-ERRORPAGES" id="HOSTS-COMPRESS-ERRORPAGES"></A> <B class="GUILABEL">Compress Error Pages</B>: Enable/Disable compression of responses which status codes correspond to an error.</P>
</LI>
<LI>
<P><A name="HOSTS-COMPRESS-MIMES" id="HOSTS-COMPRESS-MIMES"></A> <B class="GUILABEL">MIME Types</B>: Compression is considered for contents which MIME types are equal or match with the listed MIME type patterns in this table. See the "<A href="patternsformat.html">Patterns Format</A>" appendix for more information about patterns.</P>
</LI>
</UL>
</DIV>
<DIV class="SECT2">
<H2 class="SECT2"><A name="HOSTS-THROTTLE" id="HOSTS-THROTTLE">Bandwidth Limits</A></H2>
<P>With Abyss Web Server, you can have fine control on the bandwidth every host uses. You can even control the bandwidth allowed for a particular file or script, or for the contents of a directory.</P>
<P>The <B class="GUILABEL">Bandwidth Limits</B> dialog has the following fields:</P>
<UL>
<LI>
<P><A name="HOSTS-THROTTLE-ENABLED" id="HOSTS-THROTTLE-ENABLED"></A> <B class="GUILABEL">Enable Bandwidth Throttling</B>: Enable/Disable bandwidth throttling for the current host.</P>
</LI>
<LI>
<P><A name="HOSTS-THROTTLE-RULES" id="HOSTS-THROTTLE-RULES"></A> <B class="GUILABEL">Limits</B>: This table contains the bandwidth limits that are configured for this host.</P>
<P>Each limit is defined by its:</P>
<UL>
<LI>
<P><A name="HOSTS-THROTTLE-RULES-PATHS" id="HOSTS-THROTTLE-RULES-PATHS"></A> <B class="GUILABEL">Scope</B>: This table contains the virtual paths for which this bandwidth limit applies. A virtual path must begin with a slash <KBD class="USERINPUT">/</KBD>. It can also be a path patterns. In such a case, the limit applies for any virtual path that matches with the specified pattern. Refer to the "<A href="patternsformat.html">Patterns Format</A>" appendix for more information about patterns.</P>
</LI>
<LI>
<P><A name="HOSTS-THROTTLE-RULES-MAXSPEED" id="HOSTS-THROTTLE-RULES-MAXSPEED"></A> <B class="GUILABEL">Maximum Bandwidth</B>: The amount of output bandwidth that the host should not exceed for all the requests which virtual path matches with one of paths listed in the <B class="GUILABEL">Scope</B> table. If this field is empty or set to 0, it is considered as unlimited.</P>
</LI>
<LI>
<P><A name="HOSTS-THROTTLE-RULES-MAXSPEEDPERIP" id="HOSTS-THROTTLE-RULES-MAXSPEEDPERIP"></A> <B class="GUILABEL">Maximum Bandwidth Per IP Address</B>: The total amount of output bandwidth that the host not exceed for all the requests made by a single IP address and which virtual path matches with one of paths listed in the <B class="GUILABEL">Scope</B> table. If this parameter is empty or set to <KBD class="USERINPUT">0</KBD>, it is considered as unlimited.</P>
</LI>
</UL>
</LI>
</UL>
<DIV class="NOTE">
<BLOCKQUOTE class="NOTE">
<P><B>Note:</B> To set a limitation on the bandwidth of the whole host, add a bandwidth limit with <KBD class="USERINPUT">/</KBD> as its scope.</P>
</BLOCKQUOTE>
</DIV>
<DIV class="NOTE">
<BLOCKQUOTE class="NOTE">
<P><B>Note:</B> If the virtual path of a request matches with more than a single bandwidth limit, Abyss Web Server will respect all of them.</P>
</BLOCKQUOTE>
</DIV>
</DIV>
<DIV class="SECT2">
<H2 class="SECT2"><A name="HOSTS-LOG" id="HOSTS-LOG">Logging</A></H2>
<P>Select <B class="GUILABEL">Logging</B> in the host configuration menu to display the <B class="GUILABEL">Logging</B> options.</P>
<P>The dialog contains the following fields:</P>
<UL>
<LI>
<P><A name="HOSTS-LOG-FILE" id="HOSTS-LOG-FILE"></A> <B class="GUILABEL">Log File</B>: The path of the log file. If it is relative, it is considered as a subpath of the server root. If empty, logging is disabled.</P>
</LI>
<LI>
<P><A name="HOSTS-LOG-EXTENDEDFORMAT" id="HOSTS-LOG-EXTENDEDFORMAT"></A> <B class="GUILABEL">Extended Logging Format</B>: If checked, the referrer and the user agent are added to each log line.</P>
</LI>
<LI>
<P><A name="HOSTS-LOG-DENIEDPATHS" id="HOSTS-LOG-DENIEDPATHS"></A> <B class="GUILABEL">Do not Log Requests for</B>: This table contains the virtual paths for which logging is disabled. A virtual path must begin with a slash <KBD class="USERINPUT">/</KBD>. It can also be a path patterns. In such a case, the logging is disabled for any virtual path that matches with the specified pattern. Refer to the "<A href="patternsformat.html">Patterns Format</A>" appendix for more information about patterns.</P>
</LI>
<LI>
<P><A name="HOSTS-LOG-DENIEDIPS" id="HOSTS-LOG-DENIEDIPS"></A> <B class="GUILABEL">Do not Log Requests from</B>: This table contains the IP addresses or IP address ranges for which logging is disabled. Refer to "<A href="ipformat.html">IP Addresses and Ranges Format</A>" appendix for more information about the IP addresses and ranges.</P>
</LI>
</UL>
</DIV>
<DIV class="SECT2">
<H2 class="SECT2"><A name="HOSTS-ANTILEECH" id="HOSTS-ANTILEECH">Anti-Leeching</A></H2>
<P><B class="GUILABEL">Anti-Leeching</B> is a system that prevents web pages not belonging to your host from referring or linking to materials available in your web site. <SPAN class="emphasis"><I class="EMPHASIS">Leeching</I></SPAN> is also known as <SPAN class="emphasis"><I class="EMPHASIS">cross-site linking</I></SPAN>.</P>
<P>When a request is sent to the host, and if its virtual path is in the configured <B class="GUILABEL">Anti-Leeching Scope</B>, the server checks if the <KBD class="USERINPUT">Referer</KBD> header in the request matches with the current host or with one of the host names or the patterns in the <B class="GUILABEL">Allow Links from</B> table. The <KBD class="USERINPUT">Referer</KBD> header is usually set by the browser to indicate to the server from which web page the current URL was requested (or linked to.) If it does not match, the request is considered as a leeching attempt and is redirected to the URL configured in the <B class="GUILABEL">Redirect Leechers to URL</B> parameter.</P>
<P>The dialog contains the following fields:</P>
<UL>
<LI>
<P><A name="HOSTS-ANTILEECH-PATHS" id="HOSTS-ANTILEECH-PATHS"></A> <B class="GUILABEL">Anti-Leeching Scope</B>: Any request which virtual path is in or matches with one of listed virtual paths in this table is protected against leeching.</P>
</LI>
<LI>
<P><A name="HOSTS-ANTILEECH-REDIRECT" id="HOSTS-ANTILEECH-REDIRECT"></A> <B class="GUILABEL">Redirect Leechers to URL</B>: A request that is considered as a leeching request is redirected to this URL. It can be a full URL referencing another web site or a virtual path pointing on a document in the current host. If this field is empty, the server returns error 403 to the client.</P>
</LI>
<LI>
<P><A name="HOSTS-ANTILEECH-STRICT" id="HOSTS-ANTILEECH-STRICT"></A> <B class="GUILABEL">Refuse Requests with no "Referer" Header</B>: If checked, the system adopts a strict behavior and will consider requests that do not contain a <KBD class="USERINPUT">Referer</KBD> header as anti-leeching requests. It is not recommended to check this parameter since it may prevent browsers configured to not send the <KBD class="USERINPUT">Referer</KBD> header from viewing documents in your host.</P>
</LI>
<LI>
<P><A name="HOSTS-ANTILEECH-ALLOWED" id="HOSTS-ANTILEECH-ALLOWED"></A> <B class="GUILABEL">Allow Links from</B>: This table contains the names of hosts that are allowed to link to files and materials in the current host and that are not monitored against leeching. A host name in this table can also be a pattern such as <KBD class="USERINPUT">*.mysite.com</KBD>. Refer to the "<A href="patternsformat.html">Patterns Format</A>" appendix for more information about patterns.</P>
</LI>
</UL>
</DIV>
<DIV class="SECT2">
<H2 class="SECT2"><A name="HOSTS-STATS" id="HOSTS-STATS">Statistics</A></H2>
<P>The <B class="GUILABEL">Statistics</B> dialog displays a set of statistics on the host's activity since the server installation or the last host statistics reset:</P>
<UL>
<LI>
<P><A name="HOSTS-STATS-UPTIME" id="HOSTS-STATS-UPTIME"></A> <B class="GUIBUTTON">Total Uptime</B>: The total time during which the host was up.</P>
</LI>
<LI>
<P><A name="HOSTS-STATS-CURRENT-UPTIME" id="HOSTS-STATS-CURRENT-UPTIME"></A> <B class="GUIBUTTON">Uptime since Last Restart</B>: The time during which the host was up since the last server start or restart. If the host is stopped, its value is zero.</P>
</LI>
<LI>
<P><A name="HOSTS-STATS-TOTAL" id="HOSTS-STATS-TOTAL"></A> <B class="GUIBUTTON">Total Hits</B>: The total number of requests processed by the current host.</P>
</LI>
<LI>
<P><A name="HOST-STATS-TOTAL-COMPRESSED" id="HOST-STATS-TOTAL-COMPRESSED"></A><B class="GUIBUTTON">Compressed Hits</B>: The number of requests processed by the current host that resulted in compressed responses.</P>
</LI>
<LI>
<P><A name="HOSTS-STATS-ERROR" id="HOSTS-STATS-ERROR"></A> <B class="GUIBUTTON">Error Hits</B>: The number of requests targeting the current host that resulted in an error.</P>
</LI>
<LI>
<P><A name="HOSTS-STATS-HTML" id="HOSTS-STATS-HTML"></A> <B class="GUIBUTTON">HTML Hits</B>: The number of requests the host replied to by a document which MIME type was <KBD class="USERINPUT">text/html</KBD>.</P>
</LI>
<LI>
<P><A name="HOSTS-STATS-IMAGE" id="HOSTS-STATS-IMAGE"></A> <B class="GUIBUTTON">Image Hits</B>: The number of requests the host replied to by a document which MIME type starts with <KBD class="USERINPUT">image/</KBD>.</P>
</LI>
<LI>
<P><A name="HOSTS-STATS-NOTMODIFIED" id="HOSTS-STATS-NOTMODIFIED"></A> <B class="GUIBUTTON">Not Modified Hits</B>: The number of requests for which the host detected that the requested document has not changed.</P>
</LI>
<LI>
<P><A name="HOSTS-STATS-BYTES" id="HOSTS-STATS-BYTES"></A> <B class="GUIBUTTON">Transferred Data</B>: The total size of the payload sent by the current host to the clients.</P>
</LI>
<LI>
<P><A name="HOST-STATS-COMPRESSION-SAVINGS" id="HOST-STATS-COMPRESSION-SAVINGS"></A><B class="GUIBUTTON">Compression Savings</B>: The amount of data that was saved thanks to the compressed responses sent by the current host to the clients.</P>
</LI>
</UL>
<P>The host statistics are refreshed automatically every 10 seconds. You can also press <B class="GUIBUTTON">Refresh</B> for immediate refreshing. They can be reset by pressing <B class="GUIBUTTON">Reset</B>.</P>
<DIV class="NOTE">
<BLOCKQUOTE class="NOTE">
<P><B>Note:</B> The statistics are preserved when the server is shut down or when the host is stopped.</P>
</BLOCKQUOTE>
</DIV>
<DIV class="NOTE">
<BLOCKQUOTE class="NOTE">
<P><B>Note:</B> The host statistics are also available in real time to scripts and XSSI pages. Refer to the "<A href="cgivars.html">CGI environment variables</A>" for more information.</P>
</BLOCKQUOTE>
</DIV>
</DIV>
</DIV>
<DIV class="NAVFOOTER">
<HR align="left" width="100%">
<TABLE summary="Footer navigation table" width="100%" border="0" cellpadding="0" cellspacing="0">
<TR>
<TD width="33%" align="left" valign="top"><A href="hosts-add.html" accesskey="P">Prev</A></TD>
<TD width="34%" align="center" valign="top"><A href="index.html" accesskey="H">Home</A></TD>
<TD width="33%" align="right" valign="top"><A href="scripting.html" accesskey="N">Next</A></TD>
</TR>
<TR>
<TD width="33%" align="left" valign="top">Declaring a new host</TD>
<TD width="34%" align="center" valign="top"><A href="hosts.html" accesskey="U">Up</A></TD>
<TD width="33%" align="right" valign="top">CGI, FastCGI, and ISAPI</TD>
</TR>
</TABLE>
</DIV>
<DIV class="COPYRIGHT">Copyright &copy; 2001-2009 Aprelium</DIV>
</BODY>
</HTML>
